1. Einleitung

Insgesamt gibt es ca. 6500 bis 7000 Sprachen auf der Welt. Etwa die Hälfte der Erdbevölkerung sprechen eine der 10 meistgesprochenen Sprachen. Die sind Mandarin-Chinesisch, Englisch, Spanisch, Hindi, Arabisch, Portugiesisch, Bengali, Russisch, Japanisch und Deutsch.

Verschiedene Sprachen haben verschiedene Wortstellungsmöglichkeiten, zum Beispiel ist die Wortfolge auf Deutsch Subjekt-Verb-Objekt, wie im Satz “Ich koche Suppe.”, aber auf Japanisch ist die Wortfolge Subjekt-Objekt-Verb, wie im Satz: Watashi wa su-pu wo tsukuru Ich Suppe kochen

Verschiedene Sprachen haben auch verschiedene Wortstellungsmöglichkeiten in Nominalphrasen, zum Beispiel die Wortstellung von Adjektiven und Nomen in Nominalphrasen. In Deutschen ist es Adjektiv-Nomen, wie “das feuchte Holz”, aber in Französischen ist es Nomen-Adjektiv: le bois humide das Holz feuchte

Jedoch kann man nicht sagen, dass die Sprachen auf der Welt keine Gemeinsamkeiten haben. Denn alle Sprachen haben Wörter und Sätze, Wörter werden aus elementaren bedeutungslosen Lauten oder Gesten gebildet, alle Sprachen haben komplexe morphologische und/oder syntaktische Strukturen, alle Sprachen haben Frageausdrücke und Verneinungsausdrücke usw.

Es lassen sich oft universale Behauptungen nur aufstellen, wenn eine weitere Bedingung erfüllt ist: Implikationsuniversalien (vgl. W. Croft 2009). “Wenn eine Sprache L die Eigenschaft A hat, dann hat sie auch die Eigenschaft B”

Beispielsweise “Wenn eine Sprache ein [f] Laut hat, dann hat sie auch ein [s] Laut; Wenn in einer Sprache das Objekt dem Verb vorangeht”Der Hund die Katze jagt“, dann steht auch der Besitzer vor dem Besitz”des Hundes Hütte“.

Nach dieser Theorie wird in dieser empirischen Arbeit den Zusammenhangen zwischen den Wortfolgen im Satz und den Wortstellungen in Nominalphrasen von den erhobenen 26 Sprachen anschauen, ob es nach dieser Theorie auch Ausnahme gibt oder die Zusammenhangen nach Statistik signifikant sind. Diese Arbeit wird mit Statistik “R” geschrieben und alle Daten werden in “R” eingelesen und ausgewertet. Außerdem werden Karten für die Übersichten von verschiedene Themen der erhobenen Sprachen dargestellt.

2. Eigene empirische Arbeit

Um den Zusammenhangen zwischen der Wortfolge im Satz und den Wortstellungen in Nominalphrasen in der Sprache herauszufinden, wurde einen Fragebogen mit 10-deutschen Sätzen an verschiedene Muttersprachler gegeben. Von Dezember 2017 bis Ende Februar 2018 habe ich insgesamt 26 Fragebogen von Informanten zurückbekommen. Mit diesen 26 Sprachen werden die Implikationsuniversalien genau angeschaut.

2.1 Überlegungen zur Wahl der Informanten und Sprachen

Die Überlegungen zur Wahl der Personen war, dass wir nur die Muttersprachler suchen. Denn die L2-Leaner sind meistens unsicher und brauchen Lehrbücher oder Wörterbuch, um den Übersetzungsbögen ins anderen Sprachen zu übersetzen. Aber Muttersprachler können meistens die passenden Ausdrücken in ihrer Muttersprache besser finden.

Natürlich ist es beim Erheben optimal, wenn man die Sprachen von vielen Sprachfamilien als Quellen bekommen kann, am besten auch ein paar isolierte Sprachen oder die Sprachen mit wenige Sprecher dabei könnten. Die insgesamt erhobene 26 Sprachen sind: Deutsch, Englisch, Niederländisch, Französisch, Italienisch, Griechisch, Portugiesisch, Polnisch, Russisch, Ukrainisch, Rumänisch, Armenisch, Türkisch, Tigrinja, Hindi, Vietnamesisch, Indonesisch, Kroatisch, Georgisch, Berber, Persisch und Spanisch von Mexiko.

Obwohl es nur 26 Sprachen sind, aber diese erhobenen Sprachen sind gut auf den Sprachfamilien geteilt. Es gibt nicht nur Indoeuropäische Sprachen wie Deutsch, Englisch, Niederländisch, Französisch, Spanisch, Italienisch, Griechisch, Portugiesisch, Polnisch, Russisch, Ukrainisch, Rumänisch, Hindi, Kroatisch und Persisch, sondern auch die isolierten Sprachen wie Koreanisch, Japanisch und Chinesisch. Außerdem sind die Altaische Sprachen wie Türkisch, Afroasiatische Sprachen wie Tigrinja und Berber, Sinotibetische Sprachen wie Kantonesisch, Austroasiatische Sprache wie Vietnamesisch, Austronesisch wie Indonesisch und Südkaukasische Sprachen wie Georgisch (vgl. Wals.info).

Im Folgenden werden die Daten von den erhobenen Sprachen in “R” eingelesen und schließlich wird eine Karte für eine Übersicht der erhobenen Sprachen mit diesen Daten dargestellt.

Daten <- read.csv ("//Users/verawei/Desktop/HA Sprachtypologie/sources/Umfragedaten.csv"
                    , header = TRUE
                   , sep = ";")
summary(Daten)
        Sprache                 Land        Gattung              Familie  
 Armenisch  : 1   China           : 2   Romance : 5   Indoeuropäisch :16  
 Berber     : 1   Iran            : 2   Slavic  : 4   Afroasiatisch  : 2  
 Chinesisch : 1   Deutschland     : 1   Germanic: 3   Altaisch       : 1  
 Deutsch    : 1   England         : 1   Armenian: 1   Austroasiatisch: 1  
 Englisch   : 1   Ethiopia Eritrea: 1   Berber  : 1   Austronesisch  : 1  
 Französisch: 1   Frankreich      : 1   Chinese : 1   Chinesisch     : 1  
 (Other)    :20   (Other)         :18   (Other) :11   (Other)        : 4  
    Latitude       Longitude      Wortfolge          Adjektiv.Nomen
 Min.   : 0.00   Min.   :-99.38   SOV: 6    Adj+N           :17    
 1st Qu.:32.17   1st Qu.: 10.50   SVO:20    N+Adj           : 7    
 Median :39.00   Median : 34.00             No domiant order: 2    
 Mean   :36.66   Mean   : 41.68                                    
 3rd Qu.:47.50   3rd Qu.: 71.25                                    
 Max.   :56.00   Max.   :140.00                                    
                                                                   
     Musik.Mozart    Artikel.Nomen Farbe.Nomen Numeral.Nomen    Artikel.Farbe
 MoMu      : 9    DET+N     :23    Fa+N:18     Num+N:26      DET+Fa    :18   
 MuMo      :15    N+DET     : 2    N+Fa: 8                   Fa+DET    : 1   
 nicht klar: 2    nicht klar: 1                              nicht klar: 7   
                                                                             
                                                                             
                                                                             
                                                                             
   Artikel.Numeral   Artikel.Adjektiv Farbe.Adjektiv Adjektiv.Adjektiv.Umfang
 DET+Num   :21     Adj+DET   : 2      Adj+Fa:20      Adj-U+Adj : 8           
 nicht klar: 1     DET+Adj   :22      Fa+Adj: 6      Adj+Adj-U :16           
 Num+DET   : 4     nicht klar: 2                     nicht klar: 2           
                                                                             
                                                                             
                                                                             
                                                                             

Die Analyse von den erhobenen Sprachen ist als “Umfragedaten.csv” unter Ordner “sources” gespeichert. Hier wird es mit “read.csv()” in R eingelesen und als “Daten” genannt. Mit der Funktion “summary()” kann man die Strukturen von der Datei anschauen.

Karte 1: Übersicht der erhobenen Sprachen

In der Karte 1 werden alle erhobenen Sprachen nach ihrer Räumlichkeit auf der Weltkarte dargestellt. Mit diesem Bild sieht man, dass die erhobene Sprachen gut auf der ganzen Welt geteilt sind. Die meisten Sprachen sind von Europa, aber asiatische und afrikanische Sprachen sind auch dabei.

library(maps)
map("world", interior=FALSE, col="grey", resolution=0)
points(Daten$Longitude, Daten$Latitude
       , col = "red"
       , cex =.7
       , pch = 20)
title (main = "Übersicht der erhobenen Sprachen ")

Karte 2: Übersicht der erhobenen Sprachen nach der Sprachfamilie

In Folgender Karte 2 werden diese erhobenen Sprachen nach der Sprachfamilie dargestellt. Mit dieser Darstellung kann man einen besseren Überblick über die zusammengehörige Sprachfamilie. Die erhobenen Sprachen sind gut auf den Sprachfamilien geteilt. Es gibt 16 Indoeuropäische Sprachen und zwei Afroasiatische Sprachen. Außerdem sind die Sprachfamilie Südkaukasische Sprachen, Altaische Sprachen, Austroasiatische Sprachen, Austronesische Sprache, Sinotibetische Sprachen, Chinesisch, Japanisch und Koreanisch auch dabei. Darüber hinaus kann man sagen, dass die erhobenen 26 Sprachen sehr vielfältig sind.

table(Daten$Familie)

  Afroasiatisch        Altaisch Austroasiatisch   Austronesisch      Chinesisch 
              2               1               1               1               1 
 Indoeuropäisch       Japanisch      Koreanisch   Sinotibetisch   Südkaukasisch 
             16               1               1               1               1 
maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("darkgreen", "blue", "yellowgreen", "gold", "purple", "red", "deepskyblue2", "darkblue", "darkorchid1", "green3")
mycols <- cols[Daten$Familie]
mysymbols <- c(20, 20, 20, 20, 20, 20, 20, 20, 20, 20)
Sprachefamilie <- mysymbols[Daten$Familie]
myname <- c("Afroasiatisch", "Altaisch", "Austroasiatisch", "Austronesisch", "Chinesisch", "Indoeuropäisch", "Japanisch", "Koreanisch", "Sinotibetisch", "Südkaukasisch")
points(Daten$Longitude, Daten$Latitude
       , pch = Sprachefamilie
       , col = mycols
       )
title(main = "Übersicht der erhobenen Sprachen nach der Sprachfamilie")
legend ("bottomleft"
        , legend = myname
        , pch = Sprachefamilie
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Um die Struktur von den Sprachen mit Farben darzustellen, habe ich zuerst mit der Funktion “table()” die Struktur von der Sprachfamilie angeschaut. Sodass ich die richtige Reihfolge von den Sprachen mit passenden Farben einordnen konnte. Die Auswahl von Farben für die Karte ist schwierig. Eine Seite sollten die näh zusammengehörige Sprachfamilie eine ähnliche Farbe bekommen, andere Seite sollten die Ortspunkte von Sprachen gut auffällig sind.

2.2 Übersetzungssätzen

Dieser Übersetzungsbogen wurde von mir und zwei weiteren Studentinnen zusammengestellt. Mit diesem Übersetzungsbogen möchten wir herausfinden, wie bestimmte Sätze in verschiedene Sprachen aufgebaut sind, wie Superlativ und Modalpartikeln. Daher enthält der Übersetzungsbogen folgende Zehn Sätze:

  1. Ich koche Suppe.
  2. Der Bäcker backt ja das Brot am schnellsten.
  3. Die Schüler hören am liebsten Musik von Mozart.
  4. Die Touristen sehen diese fünf großen Häuser.
  5. Die Kinder werfen doch einen schönen großen roten Ball.
  6. Was machst du denn?
  7. Du hast eben nicht genug gelernt!
  8. Tim wirft den Ball am weitesten.
  9. Kleine Hunde bellen aber am lautesten.
  10. Das feuchte Holz verbrennt am schlechtesten.

Ich interessiere mich über den Zusammenhang zwischen den Wortfolgen und den Wortstellungen in Nominalphrasen der Sprachen. Für mein Analysieren sind nur folgende Satzteilen relevant:

    1. Ich koche Suppe. [Subjekt + Verb + Objekt]
    1. Musik von Mozart [ Nomen + Nomen]
    1. diese fünf großen Häuser [DET + Num + Adj-Umfang + N]
    1. einen schönen großen roten Ball [ ART + Adj + Adj-Umfang + Farbe + N]
    1. kleine Hunde [Adj + N]
    1. das feuchte Holz [DET + Adj + N]

Mit Satz 1 möchte ich die Wortfolgen im Satz von der Sprache festzustellen. Leider gibt es viele Sprachen, wenn der Subjekt im Satz “ich” ist, fällt den Subjekt weg und wird mit der Endung von Verb markiert. Daher habe ich die Wortfolgen von der Sprache immer auf alle gefragte zehn Sätzen berücksichtigt. Mit Phrase “Musik von Mozart” wird die Genitiv-Nomen-Reihenfolge analysiert, damit wird die Reihenfolge für Genitiv-Nomen oder Nomen-Genitiv in der Sprache festgestellt. Mit Sätzen 4, 5, 9, 10 werden die Reihenfolgen von verschiedenen Elementen in der Nominalphrase der erhobenen Sprachen festgestellt.

2.3 Methode und Ablauf

Die meisten Informanten sind meine Arbeitskollegen, Freunde oder Kommilitonen. Durch persönliche Gespräche, E-Mails und Nachtrichten von Facebook habe ich sie als Informanten gewonnen. Die Übersetzungsbogen sind entweder in ausgedrückten Papierformen an Informanten persönlich gegeben, oder als Word- und PDF-Datei an Informanten per E-Mail erreichtet. Die Informanten haben durchschnittlich ca. eine Woche gebraucht, bis sie uns die Übersetzungen zurückgeben. Viele Sprachen, wie Kroatisch, Armenisch und Rumänisch, hatten die Informanten weiter ihre Freunde für uns gefragt. Zusammenfassende kann man sagen, dass Enkodierung der Informanten nicht sehr schwierig war. Denn sie sind sehr motiviert, ihre Muttersprache für andre Person zu erklären und die Unterschieden zwischen ihre Muttersprache und Deutsch zu erkennen.

Die Umfragebogen “Umfrage Studie Sprachtypologie” ist unten Ordner “Umfrage” zu finden. Außerdem sind noch 22 erhobene Umfragebogen auch in demselben Ordner zu finden.

3. Ergebnisse der Umfrage

Die Ergebnisse der Umfragesätze sind zuerst nach Sprache analysiert. Die Wortfolge in Sätzen und die Wortstellung im Nominalphrasen sind nach jeder Sprache sehr genau berücksichtigt. Die Ergebnisse sind als Excel-Datei “Umfrage Analyse” unter Ordner sources zu finden.

Für die Analyse in R wird die Excel-Datei “Daten_Umfrage” genutzt. In dieser Analyse sind Sprache nach Land, Gattung und Familie zuerst geachtet. Außerdem sind Longitude und Latitude von der Sprache nach Wals.info für das Erstellen der Karte geachtet. Die Analyse von Daten sind außer Wortfolge unter sehr viele kleine Elementpaare geteilt, wie “Adjektiv + Nomen”, “Musik + Mozart”, “Artikel + Nomen”, “Farbe + Nomen”, “Numerale + Nomen”, “Artikel + Farbe”, “Artikel + Numerale”, “Artikel + Adjektiv”, “Farbe + Adjektiv” und “Adjektiv + Adjektiv-Umfrang”.

Im Folgenden werden nicht nur die Verteilung der Wortfolge von Subjekt, Objekt und Verb der erhobenen Sprachen in Weltkarte dargestellt, sondern auch die Wortstellungen in Nominalphrasen und die Reihenfolge von verschiedenen Arten der Adjektive in Nominalphrase der erhobenen Sprachen.

3.1 Die Wortfolge von Subjekt, Objekt und Verb der erhobenen Sprachen

Für die Wortfolgen von Subjekt, Objekt und Verb werden nicht nur nach dem Satz 1 “Ich koche Suppe” festgestellt, sondern auch alle weitere neun Sätze von Umfragebogen.

Mit der Funktion “table()” können wir die Verteilung der Wortfolg von der erhobenen Sprachen sehen. In diesen Sprachen gibt es insgesamt sechs Sprache, die Subjekt-Objekt-Verb Wortfolge haben, und insgesamt 20 Sprache, die Subjekt-Verb-Objekt Wortfolge haben.

Karte 3: Die Wortfolge von Subjekt, Objekt und Verb der erhobenen Sprachen

table(Daten$Wortfolge)

SOV SVO 
  6  20 
maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red")
mycols <- cols[Daten$Wortfolge]
mysymbols <- c(20, 20)
Wortfolge <- mysymbols[Daten$Wortfolge]
freq <- table(Daten$Wortfolge)
myname <- c(
      paste0("SOV-Sprache (", freq[1], ")")
    , paste0("SVO-Sprache (", freq[2], ")")
    )
points(Daten$Longitude, Daten$Latitude
       , pch = Wortfolge
       , col = mycols)
title(main = "Die Wortfolge von Subjekt, Objekt und Verb 
der erhobenen Sprachen")
legend ("bottomleft"
        , legend = myname
        , pch = Wortfolge
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.2 Die Wortstellungen in Nominalphrasen der erhobenen Sprachen

3.2.1 Die Reihenfolge von Adjektiv und Nomen in Nominalphrase

table(Daten$Adjektiv.Nomen)

           Adj+N            N+Adj No domiant order 
              17                7                2 

Karte 4: Die Reihenfolge von Adjektiv und Nomen in Nominalphrase

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue", "green3")
mycols1 <- cols[Daten$Adjektiv.Nomen]
mysymbols <- c(20, 20, 20)
AdjNon <- mysymbols[Daten$Adjektiv.Nomen]
myname <- c("Adjektiv vor Nomen (17)", "Nomen vor Adjektiv (7)", "Beides (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = AdjNon
       , col = mycols1)
title(main = "Die Reihenfolge von Adjektiv und Nomen in Nominalphrase")
legend ("bottomleft"
        , legend = myname
        , pch = AdjNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Alle berücksichtige Nominalphrase:

3.2.2 Die Reihenfolge von Artikel und Nomen in Nominalphrase

table(Daten$Artikel.Nomen)

     DET+N      N+DET nicht klar 
        23          2          1 

Karte 5: Die Reihenfolge von Artikel und Nomen in Nominalphrase

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue", "green3")
mycols2 <- cols[Daten$Artikel.Nomen]
mysymbols <- c(20, 20, 20)
ArtNon <- mysymbols[Daten$Artikel.Nomen]
myname <- c("Artikel vor Nomen (23)", "Nomen vor Artikel (2)", "Nicht Klar (1)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtNon
       , col = mycols2)
title(main = "Die Reihenfolge von Artikel und Nomen in Nominalphrase")
legend ("bottomleft"
        , legend = myname
        , pch = ArtNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Alle berücksichtige Nominalphrase:

??? NA zeigt hier in der Karte nicht… Persisch ???

Warum nicht klar? nicht eingegeben? nicht vorkommen? etc.

3.2.3 Die Reihenfolge von Farbe und Nomen in Nominalphrase “roter Ball”

table(Daten$Farbe.Nomen)

Fa+N N+Fa 
  18    8 

Karte 6: Die Reihenfolge von Farbe und Nomen in Nominalphrase: roter Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue")
mycols3 <- cols[Daten$Farbe.Nomen]
mysymbols <- c(20, 20)
FarbNon <- mysymbols[Daten$Farbe.Nomen]
myname <- c("Farbe vor Nomen (18)", "Nomen vor Farbe (8)")
points (Daten$Longitude, Daten$Latitude
       , pch = FarbNon
       , col = mycols3)
title(main = "Die Reihenfolge von Farbe und Nomen in Nominalphrase: roter Ball")
legend ("bottomleft"
        , legend = myname
        , pch = FarbNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.2.4 Die Reihenfolge von Numeralen und Nomen in Nominalphrase “fünf Häuser”

table(Daten$Numeral.Nomen)

Num+N 
   26 

Karte 7: Die Reihenfolge von Numerale und Nomen in Nominalphrase: fünf Häuser

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red")
mycols4 <- cols[Daten$Numeral.Nomen]
mysymbols <- c(20)
NumNon <- mysymbols[Daten$Numeral.Nomen]
myname <- c("Numerale vor Nomen (26)", "Nomen vor Numerale (0)")
points (Daten$Longitude, Daten$Latitude
       , pch = NumNon
       , col = mycols4)
title(main = "Die Reihenfolge von Numerale und Nomen 
in Nominalphrase: fünf Häuser")
legend ("bottomleft"
        , legend = myname
        , pch = NumNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

In allen erhobenen Sprachen sind Numeral vor Nomen in Nominalphrase “fünf Häuser”, hier gibt es keine Ausnahme.

3.2.5 Die Wortfolge von Genitiv und Nomen in Nominalphrase “Musik von Mozart”

table(Daten$Musik.Mozart)

      MoMu       MuMo nicht klar 
         9         15          2 

Karte 8: Die Wortfolge von Genitiv und Nomen in Nominalphrase: Musik von Mozart

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue", "green3")
mycols5 <- cols[Daten$Musik.Mozart]
mysymbols <- c(20, 20, 20)
MuMo <- mysymbols[Daten$Musik.Mozart]
myname <- c("Genitiv vor Nomen (9)", "Nomen vor Genitiv (15)", "Nicht klar (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = MuMo
       , col = mycols5)
title(main = "Die Wortfolge von Genitiv und Nomen
in Nominalphrase: Musik von Mozart")
legend ("bottomleft"
        , legend = myname
        , pch = MuMo
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.3 Die Reihenfolge von verschiedenen Arten der Adjektive in Nominalphrase

3.3.1 Die Reihenfolge von Artikel und Farbe in Nominalphrase “einen roten Ball”

table(Daten$Artikel.Farbe)

    DET+Fa     Fa+DET nicht klar 
        18          1          7 

Karte 9: Die Reihenfolge von Artikel und Farbe in Nominalphrase: einen roten Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red", "green3")
mycols6 <- cols[Daten$Artikel.Farbe]
mysymbols <- c(20, 20, 20)
ArtFa <- mysymbols[Daten$Artikel.Farbe]
myname <- c("Artikel vor Farbe (28)", "Farbe vor Artikel (1)", "Nicht klar (7)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtFa
       , col = mycols6)
title(main = "Die Reihenfolge von Artikel und Farbe 
in Nominalphrase: einen roten Ball")
legend ("bottomleft"
        , legend = myname
        , pch = ArtFa
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

??? Warum so vile “nicht klar”

3.3.2 Die Reihenfolge von Artikel und Numerale in Nominalphrase “diese fünf Häuser”

table(Daten$Artikel.Numeral)

   DET+Num nicht klar    Num+DET 
        21          1          4 

Karte 10: Die Reihenfolge von Artikel und Numerale in Nominalphrase: diese fünf Häuser

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "green3", "red")
mycols7 <- cols[Daten$Artikel.Numeral]
mysymbols <- c(20, 20, 20)
ArtNum <- mysymbols[Daten$Artikel.Numeral]
myname <- c("Artikel vor Numerale (21)", "Nicht klar (1)", "Numerale vor Artikel (4)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtNum
       , col = mycols7)
title(main = "Die Reihenfolge von Artikel und Numerale
in Nominalphrase: diese fünf Häuser")
legend ("bottomleft"
        , legend = myname
        , pch = ArtNum
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.3.3 Die Reihenfolge von Artikel und Adjektiv in Nominalphrase “das feuchte Holz”

table(Daten$Artikel.Adjektiv)

   Adj+DET    DET+Adj nicht klar 
         2         22          2 

Karte 11: Die Reihenfolge von Artikel und Adjektiv in Nominalphrase: das feuchte Holz

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red", "green3")
mycols8 <- cols[Daten$Artikel.Adjektiv]
mysymbols <- c(20, 20, 20)
ArtAdj <- mysymbols[Daten$Artikel.Adjektiv]
myname <- c("Adjektiv vor Artikel (22)", "Artikel vor Adjektiv (2)", "Nicht klar (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtAdj
       , col = mycols8)
title(main = "Die Reihenfolge von Artikel und Adjektiv 
in Nominalphrase: das feuchte Holz")
legend ("bottomleft"
        , legend = myname
        , pch = ArtAdj
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.3.4 Die Reihenfolge von Farbe und Adjektiv in Nominalphrase “schönen roten Ball”

table(Daten$Farbe.Adjektiv)

Adj+Fa Fa+Adj 
    20      6 

Karte 12: Die Reihenfolge von Adjektiv und Farbe in Nominalphrase: schönen roten Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red")
mycols9 <- cols[Daten$Farbe.Adjektiv]
mysymbols <- c(20, 20)
FaAdj <- mysymbols[Daten$Farbe.Adjektiv]
myname <- c("Adjektiv vor Farbe (20)", "Farbe vor Adjektiv (6)")
points (Daten$Longitude, Daten$Latitude
       , pch = FaAdj
       , col = mycols9)
title(main = "Die Reihenfolge von Adjektiv und Farbe 
in Nominalphrase: schönen roten Ball")
legend ("bottomleft"
        , legend = myname
        , pch = FaAdj
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.3.5 Die Reihenfolge von Adjektiv und Umfangsadjektiv in Nominalphrase “schönen großen Ball”

table(Daten$Adjektiv.Adjektiv.Umfang)

 Adj-U+Adj  Adj+Adj-U nicht klar 
         8         16          2 

Karte 13: Die Reihenfolge von Adjektiv und Umfangsadjektiv in Nominalphrase: schönen großen Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red", "green3")
mycols10 <- cols[Daten$Adjektiv.Adjektiv.Umfang]
mysymbols <- c(20, 20, 20)
AdjAdjU <- mysymbols[Daten$Adjektiv.Adjektiv.Umfang]
myname <- c("Umfangsadjektiv vor Adjektiv (8)", "Adjektiv vor Umfangsadjektiv (16)", "Nicht klar (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = AdjAdjU
       , col = mycols10)
title(main = "Die Reihenfolge von Adjektiv und Umfangsadjektiv 
in Nominalphrase: schönen großen Ball")
legend ("bottomleft"
        , legend = myname
        , pch = AdjAdjU
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

4. Zusammenhang zwischen den Wortfolgen und den Wortstellungen in Nominalphrasen der erhobenen Sprachen

Vermutungen

4.1 Zusammenhang zwischen den Wortfolgen und die Wortstellung des Adjektivs und Nomen

Folge1 <- table(Daten$Wortfolge, Daten$Adjektiv.Nomen)
Folge1
     
      Adj+N N+Adj No domiant order
  SOV     5     1                0
  SVO    12     6                2
barplot (Folge1
         , main = "Zusammenhang zwischen den Wortfolgen und
die Wortstellung des Adjektivs und Nomen"
         )

Der Unterschied zwischen den Sprachen kann man auch mit einem Boxplot darstellen, aber das hilft nicht so viel, weil jeder Vokal anders ist.

mosaicplot(Folge1
           , color = TRUE
           , xlab = "Wortfolge"
           , ylab = "Wortstllung der Adjektiv und Nomen"
           , main = "Zusammenhang zwischen den Wortfolgen und 
den Wortstellungen der Adjektiven und Nomen")

chisq.test(Folge1)
Chi-Quadrat-Approximation kann inkorrekt sein

    Pearson's Chi-squared test

data:  Folge1
X-squared = 1.2891, df = 2, p-value = 0.5249
t.test(Folge1)

    One Sample t-test

data:  Folge1
t = 2.4058, df = 5, p-value = 0.06118
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -0.2968864  8.9635531
sample estimates:
mean of x 
 4.333333 

???

cor.test(Folge1, Folge1)

    Pearson's product-moment correlation

data:  Folge1 and Folge1
t = Inf, df = 4, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 1 1
sample estimates:
cor 
  1 

4.2 Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Artikel und Nomen

Folge2 <- table(Daten$Wortfolge, Daten$Artikel.Nomen)
Folge2
     
      DET+N N+DET nicht klar
  SOV     5     0          1
  SVO    18     2          0
mosaicplot (Folge2
            , color = TRUE
        , xlab = "Wortfolgen"
        , ylab = "Wortstellung von Artikel und Nomen"
        , main = "Zusammenhang zwischen den Wortfolgen und
        den Wortstellungen der Artikel und Nomen ")

chisq.test(Folge2)
Chi-Quadrat-Approximation kann inkorrekt sein

    Pearson's Chi-squared test

data:  Folge2
X-squared = 3.9565, df = 2, p-value = 0.1383
t.test(Folge2)

    One Sample t-test

data:  Folge2
t = 1.5278, df = 5, p-value = 0.1871
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -2.957538 11.624205
sample estimates:
mean of x 
 4.333333 
cor.test(Folge2, Folge2)

    Pearson's product-moment correlation

data:  Folge2 and Folge2
t = Inf, df = 4, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 1 1
sample estimates:
cor 
  1 

4.3 Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Farbe und Nomen

Folge3 <- table(Daten$Wortfolge, Daten$Farbe.Nomen)
Folge3
     
      Fa+N N+Fa
  SOV    5    1
  SVO   13    7
mosaicplot (Folge3
        , color = TRUE
        , xlab = "Wortfolgen"
        , ylab = "Wortstellung von Farbe und Nomen"
        , main = "Zusammenhang zwischen den Wortfolgen und
den Wortstellungen der Farbe und Nomen ")

chisq.test(Folge3)
Chi-Quadrat-Approximation kann inkorrekt sein

    Pearson's Chi-squared test with Yates' continuity correction

data:  Folge3
X-squared = 0.12187, df = 1, p-value = 0.727
t.test(Folge3)

    One Sample t-test

data:  Folge3
t = 2.6, df = 3, p-value = 0.08038
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -1.456116 14.456116
sample estimates:
mean of x 
      6.5 

4.4 Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Numerale und Nomen

Folge4 <- table(Daten$Wortfolge, Daten$Numeral.Nomen)
Folge4
     
      Num+N
  SOV     6
  SVO    20
mosaicplot (Folge4
        , xlab = "Wortfolgen"
        , ylab = "Wortstellung von Numerale und Nomen"
        , main = "Zusammenhang zwischen den Wortfolgen und
den Wortstellungen der Numerale und Nomen ")

chisq.test(Folge4)

    Chi-squared test for given probabilities

data:  Folge4
X-squared = 7.5385, df = 1, p-value = 0.00604
t.test(Folge4)

    One Sample t-test

data:  Folge4
t = 1.8571, df = 1, p-value = 0.3145
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -75.94343 101.94343
sample estimates:
mean of x 
       13 

5. Allgemeine Diskussion und Ausblick

Kritik In vielen Sprachen sind die Bedeutung von jedem Wort nicht klar markiert oder geschrieben, wie Persisch, Koreanisch. Man kann nur mit Wörterbuch und Google Übersetzer die Bedeutung vom einzelnen Wort raussuchen, aber meistens ist man unsicher. Daher kann man nur die Art von Wort feststellen, nicht die genaue Bedeutung und Feinheit.

Satz 1: Ich koche Suppe. In Vielen Sprachen wird der Subjekt nicht eingegeben, wenn es “ich” ist. “Ich” als Subjekt wird in der Endung von Verb makiert.

Kritik: 1 Nur mit ein paar Sätzen von Übersetzungen kann man nicht alle Variationen von einer Sprache bekommen, sondern nur die passende Form von diesem Satz. Das bedeutet noch lange nicht, dass andere Form in dieser Sprache nicht gibt.

2 Die im Text vergleichende Reihfolgen sind auch nicht unbedingt so ausgedrückt in der Sprache in allen Ausdrückssituationen.

Jedoch gibt es uns eine gute Überblick von Sprachen der Welt, dass die Sprache sehr vielfältig sind und doch einen Zusammenhang mit einandern haben.

Literatur- und Quellenverzeichnis

LS0tCnRpdGxlOiBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiB2b24gU3ByYWNoZW4gZGVyIFdlbHQKYXV0aG9yOiAiSHVhbiBXZWksIE1hc3RlciBMaW5Lb0tvLCBNYXJ0Li1Oci4gMjQ3MTg4NCIKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6CiAgcGRmX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKICBodG1sX25vdGVib29rOgogICAgdG9jOiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCi0tLQoKCiMxLiBFaW5sZWl0dW5nCgpJbnNnZXNhbXQgZ2lidCBlcyBjYS4gNjUwMCBiaXMgNzAwMCBTcHJhY2hlbiBhdWYgZGVyIFdlbHQuIEV0d2EgZGllIEjDpGxmdGUgZGVyIEVyZGJldsO2bGtlcnVuZyBzcHJlY2hlbiBlaW5lIGRlciAxMCBtZWlzdGdlc3Byb2NoZW5lbiBTcHJhY2hlbi4gRGllIHNpbmQgTWFuZGFyaW4tQ2hpbmVzaXNjaCwgRW5nbGlzY2gsIFNwYW5pc2NoLCBIaW5kaSwgQXJhYmlzY2gsIFBvcnR1Z2llc2lzY2gsIEJlbmdhbGksIFJ1c3Npc2NoLCBKYXBhbmlzY2ggdW5kIERldXRzY2guIAoKVmVyc2NoaWVkZW5lIFNwcmFjaGVuIGhhYmVuIHZlcnNjaGllZGVuZSBXb3J0c3RlbGx1bmdzbcO2Z2xpY2hrZWl0ZW4sIHp1bSBCZWlzcGllbCBpc3QgZGllIFdvcnRmb2xnZSBhdWYgRGV1dHNjaCBTdWJqZWt0LVZlcmItT2JqZWt0LCB3aWUgaW0gU2F0eiAiSWNoIGtvY2hlIFN1cHBlLiIsIGFiZXIgYXVmIEphcGFuaXNjaCBpc3QgZGllIFdvcnRmb2xnZSBTdWJqZWt0LU9iamVrdC1WZXJiLCB3aWUgaW0gU2F0ejoKV2F0YXNoaSB3YSBzdS1wdSAgd28gIHRzdWt1cnUgCkljaCAgICAgICAgU3VwcGUgICAgICAga29jaGVuCgpWZXJzY2hpZWRlbmUgU3ByYWNoZW4gaGFiZW4gYXVjaCB2ZXJzY2hpZWRlbmUgV29ydHN0ZWxsdW5nc23DtmdsaWNoa2VpdGVuIGluIE5vbWluYWxwaHJhc2VuLCB6dW0gQmVpc3BpZWwgZGllIFdvcnRzdGVsbHVuZyB2b24gQWRqZWt0aXZlbiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZW4uIEluIERldXRzY2hlbiBpc3QgZXMgQWRqZWt0aXYtTm9tZW4sIHdpZSAiZGFzIGZldWNodGUgSG9seiIsIGFiZXIgaW4gRnJhbnrDtnNpc2NoZW4gaXN0IGVzIE5vbWVuLUFkamVrdGl2OgpsZSAgICBib2lzICAgaHVtaWRlCmRhcyAgIEhvbHogICBmZXVjaHRlCgpKZWRvY2gga2FubiBtYW4gbmljaHQgc2FnZW4sIGRhc3MgZGllIFNwcmFjaGVuIGF1ZiBkZXIgV2VsdCBrZWluZSBHZW1laW5zYW1rZWl0ZW4gaGFiZW4uIERlbm4gYWxsZSBTcHJhY2hlbiBoYWJlbiBXw7ZydGVyIHVuZCBTw6R0emUsIFfDtnJ0ZXIgd2VyZGVuIGF1cyBlbGVtZW50YXJlbiBiZWRldXR1bmdzbG9zZW4gTGF1dGVuIG9kZXIgR2VzdGVuIGdlYmlsZGV0LCBhbGxlIFNwcmFjaGVuIGhhYmVuIGtvbXBsZXhlIG1vcnBob2xvZ2lzY2hlIHVuZC9vZGVyIHN5bnRha3Rpc2NoZSBTdHJ1a3R1cmVuLCBhbGxlIFNwcmFjaGVuIGhhYmVuIEZyYWdlYXVzZHLDvGNrZSB1bmQgVmVybmVpbnVuZ3NhdXNkcsO8Y2tlIHVzdy4gCgpFcyBsYXNzZW4gc2ljaCBvZnQgdW5pdmVyc2FsZSBCZWhhdXB0dW5nZW4gbnVyIGF1ZnN0ZWxsZW4sIHdlbm4gZWluZSB3ZWl0ZXJlIEJlZGluZ3VuZyBlcmbDvGxsdCBpc3Q6IEltcGxpa2F0aW9uc3VuaXZlcnNhbGllbiAodmdsLiBXLiBDcm9mdCAyMDA5KS4KIldlbm4gZWluZSBTcHJhY2hlIEwgZGllIEVpZ2Vuc2NoYWZ0IEEgaGF0LCBkYW5uIGhhdCBzaWUgYXVjaCBkaWUgRWlnZW5zY2hhZnQgQiIKCkJlaXNwaWVsc3dlaXNlICJXZW5uIGVpbmUgU3ByYWNoZSBlaW4gW2ZdIExhdXQgaGF0LCBkYW5uIGhhdCBzaWUgYXVjaCBlaW4gW3NdIExhdXQ7IFdlbm4gaW4gZWluZXIgU3ByYWNoZSBkYXMgT2JqZWt0IGRlbSBWZXJiIHZvcmFuZ2VodCAiRGVyIEh1bmQgZGllIEthdHplIGphZ3QiLCBkYW5uIHN0ZWh0IGF1Y2ggZGVyIEJlc2l0emVyIHZvciBkZW0gQmVzaXR6ICJkZXMgSHVuZGVzIEjDvHR0ZSIuCgpOYWNoIGRpZXNlciBUaGVvcmllIHdpcmQgaW4gZGllc2VyIGVtcGlyaXNjaGVuIEFyYmVpdCBkZW4gWnVzYW1tZW5oYW5nZW4gendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gaW0gU2F0eiB1bmQgZGVuIFdvcnRzdGVsbHVuZ2VuIGluIE5vbWluYWxwaHJhc2VuIHZvbiBkZW4gZXJob2JlbmVuIDI2IFNwcmFjaGVuIGFuc2NoYXVlbiwgb2IgZXMgbmFjaCBkaWVzZXIgVGhlb3JpZSBhdWNoIEF1c25haG1lIGdpYnQgb2RlciBkaWUgWnVzYW1tZW5oYW5nZW4gbmFjaCBTdGF0aXN0aWsgc2lnbmlmaWthbnQgc2luZC4gRGllc2UgQXJiZWl0IHdpcmQgbWl0IFN0YXRpc3RpayAiUiIgZ2VzY2hyaWViZW4gdW5kIGFsbGUgRGF0ZW4gd2VyZGVuIGluICJSIiBlaW5nZWxlc2VuIHVuZCBhdXNnZXdlcnRldC4gQXXDn2VyZGVtIHdlcmRlbiBLYXJ0ZW4gZsO8ciBkaWUgw5xiZXJzaWNodGVuIHZvbiB2ZXJzY2hpZWRlbmUgVGhlbWVuIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4gZGFyZ2VzdGVsbHQuIAoKCiMyLiBFaWdlbmUgZW1waXJpc2NoZSBBcmJlaXQKClVtIGRlbiBadXNhbW1lbmhhbmdlbiB6d2lzY2hlbiBkZXIgV29ydGZvbGdlIGltIFNhdHogdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiBpbiBkZXIgU3ByYWNoZSBoZXJhdXN6dWZpbmRlbiwgd3VyZGUgZWluZW4gRnJhZ2Vib2dlbiBtaXQgMTAtZGV1dHNjaGVuIFPDpHR6ZW4gYW4gdmVyc2NoaWVkZW5lIE11dHRlcnNwcmFjaGxlciBnZWdlYmVuLiBWb24gRGV6ZW1iZXIgMjAxNyBiaXMgRW5kZSBGZWJydWFyIDIwMTggaGFiZSBpY2ggaW5zZ2VzYW10IDI2IEZyYWdlYm9nZW4gdm9uIEluZm9ybWFudGVuIHp1csO8Y2tiZWtvbW1lbi4gTWl0IGRpZXNlbiAyNiBTcHJhY2hlbiB3ZXJkZW4gZGllIEltcGxpa2F0aW9uc3VuaXZlcnNhbGllbiBnZW5hdSBhbmdlc2NoYXV0LiAKCiMjMi4xIMOcYmVybGVndW5nZW4genVyIFdhaGwgZGVyIEluZm9ybWFudGVuIHVuZCBTcHJhY2hlbgoKRGllIMOcYmVybGVndW5nZW4genVyIFdhaGwgZGVyIFBlcnNvbmVuIHdhciwgZGFzcyB3aXIgbnVyIGRpZSBNdXR0ZXJzcHJhY2hsZXIgc3VjaGVuLiBEZW5uIGRpZSBMMi1MZWFuZXIgc2luZCBtZWlzdGVucyB1bnNpY2hlciB1bmQgYnJhdWNoZW4gTGVocmLDvGNoZXIgb2RlciBXw7ZydGVyYnVjaCwgdW0gZGVuIMOcYmVyc2V0enVuZ3Niw7ZnZW4gaW5zIGFuZGVyZW4gU3ByYWNoZW4genUgw7xiZXJzZXR6ZW4uIEFiZXIgTXV0dGVyc3ByYWNobGVyIGvDtm5uZW4gbWVpc3RlbnMgZGllIHBhc3NlbmRlbiBBdXNkcsO8Y2tlbiBpbiBpaHJlciBNdXR0ZXJzcHJhY2hlIGJlc3NlciBmaW5kZW4uICAKCk5hdMO8cmxpY2ggaXN0IGVzIGJlaW0gRXJoZWJlbiBvcHRpbWFsLCB3ZW5uIG1hbiBkaWUgU3ByYWNoZW4gdm9uIHZpZWxlbiBTcHJhY2hmYW1pbGllbiBhbHMgUXVlbGxlbiBiZWtvbW1lbiBrYW5uLCBhbSBiZXN0ZW4gYXVjaCBlaW4gcGFhciBpc29saWVydGUgU3ByYWNoZW4gb2RlciBkaWUgU3ByYWNoZW4gbWl0IHdlbmlnZSBTcHJlY2hlciBkYWJlaSBrw7ZubnRlbi4gRGllIGluc2dlc2FtdCBlcmhvYmVuZSAyNiBTcHJhY2hlbiBzaW5kOiBEZXV0c2NoLCBFbmdsaXNjaCwgTmllZGVybMOkbmRpc2NoLCBGcmFuesO2c2lzY2gsIEl0YWxpZW5pc2NoLCBHcmllY2hpc2NoLCBQb3J0dWdpZXNpc2NoLCBQb2xuaXNjaCwgUnVzc2lzY2gsIFVrcmFpbmlzY2gsIFJ1bcOkbmlzY2gsIEFybWVuaXNjaCwgVMO8cmtpc2NoLCBUaWdyaW5qYSwgSGluZGksIFZpZXRuYW1lc2lzY2gsIEluZG9uZXNpc2NoLCBLcm9hdGlzY2gsIEdlb3JnaXNjaCwgQmVyYmVyLCBQZXJzaXNjaCB1bmQgU3BhbmlzY2ggdm9uIE1leGlrby4gCgpPYndvaGwgZXMgbnVyIDI2IFNwcmFjaGVuIHNpbmQsIGFiZXIgZGllc2UgZXJob2JlbmVuIFNwcmFjaGVuIHNpbmQgZ3V0IGF1ZiBkZW4gU3ByYWNoZmFtaWxpZW4gZ2V0ZWlsdC4gRXMgZ2lidCBuaWNodCBudXIgSW5kb2V1cm9ww6Rpc2NoZSBTcHJhY2hlbiB3aWUgRGV1dHNjaCwgRW5nbGlzY2gsIE5pZWRlcmzDpG5kaXNjaCwgRnJhbnrDtnNpc2NoLCBTcGFuaXNjaCwgSXRhbGllbmlzY2gsIEdyaWVjaGlzY2gsIFBvcnR1Z2llc2lzY2gsIFBvbG5pc2NoLCBSdXNzaXNjaCwgVWtyYWluaXNjaCwgUnVtw6RuaXNjaCwgSGluZGksIEtyb2F0aXNjaCB1bmQgUGVyc2lzY2gsIHNvbmRlcm4gYXVjaCBkaWUgaXNvbGllcnRlbiBTcHJhY2hlbiB3aWUgS29yZWFuaXNjaCwgSmFwYW5pc2NoIHVuZCBDaGluZXNpc2NoLiBBdcOfZXJkZW0gc2luZCBkaWUgQWx0YWlzY2hlIFNwcmFjaGVuIHdpZSBUw7xya2lzY2gsIEFmcm9hc2lhdGlzY2hlIFNwcmFjaGVuIHdpZSBUaWdyaW5qYSB1bmQgQmVyYmVyLCBTaW5vdGliZXRpc2NoZSBTcHJhY2hlbiB3aWUgS2FudG9uZXNpc2NoLCBBdXN0cm9hc2lhdGlzY2hlIFNwcmFjaGUgd2llIFZpZXRuYW1lc2lzY2gsIEF1c3Ryb25lc2lzY2ggd2llIEluZG9uZXNpc2NoIHVuZCBTw7xka2F1a2FzaXNjaGUgU3ByYWNoZW4gd2llIEdlb3JnaXNjaCAodmdsLiBXYWxzLmluZm8pLgoKSW0gRm9sZ2VuZGVuIHdlcmRlbiBkaWUgRGF0ZW4gdm9uIGRlbiBlcmhvYmVuZW4gU3ByYWNoZW4gaW4gIlIiIGVpbmdlbGVzZW4gdW5kIHNjaGxpZcOfbGljaCB3aXJkIGVpbmUgS2FydGUgZsO8ciBlaW5lIMOcYmVyc2ljaHQgZGVyIGVyaG9iZW5lbiBTcHJhY2hlbiBtaXQgZGllc2VuIERhdGVuIGRhcmdlc3RlbGx0LgoKYGBge3J9CkRhdGVuIDwtIHJlYWQuY3N2ICgiLy9Vc2Vycy92ZXJhd2VpL0Rlc2t0b3AvSEEgU3ByYWNodHlwb2xvZ2llL3NvdXJjZXMvVW1mcmFnZWRhdGVuLmNzdiIKICAgICAgICAgICAgICAgICAgICAsIGhlYWRlciA9IFRSVUUKICAgICAgICAgICAgICAgICAgICwgc2VwID0gIjsiKQpgYGAKCmBgYHtyfQpzdW1tYXJ5KERhdGVuKQpgYGAKCkRpZSBBbmFseXNlIHZvbiBkZW4gZXJob2JlbmVuIFNwcmFjaGVuIGlzdCBhbHMgIlVtZnJhZ2VkYXRlbi5jc3YiIHVudGVyIE9yZG5lciAic291cmNlcyIgZ2VzcGVpY2hlcnQuIEhpZXIgd2lyZCBlcyBtaXQgInJlYWQuY3N2KCkiIGluIFIgZWluZ2VsZXNlbiB1bmQgYWxzICJEYXRlbiIgZ2VuYW5udC4gTWl0IGRlciBGdW5rdGlvbiAic3VtbWFyeSgpIiBrYW5uIG1hbiBkaWUgU3RydWt0dXJlbiB2b24gZGVyIERhdGVpIGFuc2NoYXVlbi4gCgojIyMjIEthcnRlIDE6IMOcYmVyc2ljaHQgZGVyIGVyaG9iZW5lbiBTcHJhY2hlbgoKSW4gZGVyIEthcnRlICAxIHdlcmRlbiBhbGxlIGVyaG9iZW5lbiBTcHJhY2hlbiBuYWNoIGlocmVyIFLDpHVtbGljaGtlaXQgYXVmIGRlciBXZWx0a2FydGUgZGFyZ2VzdGVsbHQuIE1pdCBkaWVzZW0gQmlsZCBzaWVodCBtYW4sIGRhc3MgZGllIGVyaG9iZW5lIFNwcmFjaGVuIGd1dCBhdWYgZGVyIGdhbnplbiBXZWx0IGdldGVpbHQgc2luZC4gRGllIG1laXN0ZW4gU3ByYWNoZW4gc2luZCB2b24gRXVyb3BhLCBhYmVyIGFzaWF0aXNjaGUgdW5kIGFmcmlrYW5pc2NoZSBTcHJhY2hlbiBzaW5kIGF1Y2ggZGFiZWkuIAoKYGBge3J9CmxpYnJhcnkobWFwcykKbWFwKCJ3b3JsZCIsIGludGVyaW9yPUZBTFNFLCBjb2w9ImdyZXkiLCByZXNvbHV0aW9uPTApCgpwb2ludHMoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBjb2wgPSAicmVkIgogICAgICAgLCBjZXggPS43CiAgICAgICAsIHBjaCA9IDIwKQoKdGl0bGUgKG1haW4gPSAiw5xiZXJzaWNodCBkZXIgZXJob2JlbmVuIFNwcmFjaGVuICIpCmBgYAoKIyMjIyBLYXJ0ZSAyOiDDnGJlcnNpY2h0IGRlciBlcmhvYmVuZW4gU3ByYWNoZW4gbmFjaCBkZXIgU3ByYWNoZmFtaWxpZQoKSW4gRm9sZ2VuZGVyIEthcnRlIDIgd2VyZGVuIGRpZXNlIGVyaG9iZW5lbiBTcHJhY2hlbiBuYWNoIGRlciBTcHJhY2hmYW1pbGllIGRhcmdlc3RlbGx0LiBNaXQgZGllc2VyIERhcnN0ZWxsdW5nIGthbm4gbWFuIGVpbmVuIGJlc3NlcmVuIMOcYmVyYmxpY2sgw7xiZXIgZGllIHp1c2FtbWVuZ2Vow7ZyaWdlIFNwcmFjaGZhbWlsaWUuIERpZSBlcmhvYmVuZW4gU3ByYWNoZW4gc2luZCBndXQgYXVmIGRlbiBTcHJhY2hmYW1pbGllbiBnZXRlaWx0LiBFcyBnaWJ0IDE2IEluZG9ldXJvcMOkaXNjaGUgU3ByYWNoZW4gdW5kIHp3ZWkgQWZyb2FzaWF0aXNjaGUgU3ByYWNoZW4uIEF1w59lcmRlbSBzaW5kIGRpZSBTcHJhY2hmYW1pbGllIFPDvGRrYXVrYXNpc2NoZSBTcHJhY2hlbiwgQWx0YWlzY2hlIFNwcmFjaGVuLCBBdXN0cm9hc2lhdGlzY2hlIFNwcmFjaGVuLCBBdXN0cm9uZXNpc2NoZSBTcHJhY2hlLCBTaW5vdGliZXRpc2NoZSBTcHJhY2hlbiwgQ2hpbmVzaXNjaCwgSmFwYW5pc2NoIHVuZCBLb3JlYW5pc2NoIGF1Y2ggZGFiZWkuIERhcsO8YmVyIGhpbmF1cyBrYW5uIG1hbiBzYWdlbiwgZGFzcyBkaWUgZXJob2JlbmVuIDI2IFNwcmFjaGVuIHNlaHIgdmllbGbDpGx0aWcgc2luZC4KCmBgYHtyfQp0YWJsZShEYXRlbiRGYW1pbGllKQpgYGAKCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygiZGFya2dyZWVuIiwgImJsdWUiLCAieWVsbG93Z3JlZW4iLCAiZ29sZCIsICJwdXJwbGUiLCAicmVkIiwgImRlZXBza3libHVlMiIsICJkYXJrYmx1ZSIsICJkYXJrb3JjaGlkMSIsICJncmVlbjMiKQpteWNvbHMgPC0gY29sc1tEYXRlbiRGYW1pbGllXQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjApClNwcmFjaGVmYW1pbGllIDwtIG15c3ltYm9sc1tEYXRlbiRGYW1pbGllXQoKbXluYW1lIDwtIGMoIkFmcm9hc2lhdGlzY2giLCAiQWx0YWlzY2giLCAiQXVzdHJvYXNpYXRpc2NoIiwgIkF1c3Ryb25lc2lzY2giLCAiQ2hpbmVzaXNjaCIsICJJbmRvZXVyb3DDpGlzY2giLCAiSmFwYW5pc2NoIiwgIktvcmVhbmlzY2giLCAiU2lub3RpYmV0aXNjaCIsICJTw7xka2F1a2FzaXNjaCIpCgpwb2ludHMoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBTcHJhY2hlZmFtaWxpZQogICAgICAgLCBjb2wgPSBteWNvbHMKICAgICAgICkKCnRpdGxlKG1haW4gPSAiw5xiZXJzaWNodCBkZXIgZXJob2JlbmVuIFNwcmFjaGVuIG5hY2ggZGVyIFNwcmFjaGZhbWlsaWUiKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gU3ByYWNoZWZhbWlsaWUKICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKClVtIGRpZSBTdHJ1a3R1ciB2b24gZGVuIFNwcmFjaGVuIG1pdCBGYXJiZW4gZGFyenVzdGVsbGVuLCBoYWJlIGljaCB6dWVyc3QgbWl0IGRlciBGdW5rdGlvbiAidGFibGUoKSIgZGllIFN0cnVrdHVyIHZvbiBkZXIgU3ByYWNoZmFtaWxpZSBhbmdlc2NoYXV0LiBTb2Rhc3MgaWNoIGRpZSByaWNodGlnZSBSZWloZm9sZ2Ugdm9uIGRlbiBTcHJhY2hlbiBtaXQgcGFzc2VuZGVuIEZhcmJlbiBlaW5vcmRuZW4ga29ubnRlLiBEaWUgQXVzd2FobCB2b24gRmFyYmVuIGbDvHIgZGllIEthcnRlIGlzdCBzY2h3aWVyaWcuIEVpbmUgU2VpdGUgc29sbHRlbiBkaWUgbsOkaCB6dXNhbW1lbmdlaMO2cmlnZSBTcHJhY2hmYW1pbGllIGVpbmUgw6RobmxpY2hlIEZhcmJlIGJla29tbWVuLCBhbmRlcmUgU2VpdGUgc29sbHRlbiBkaWUgT3J0c3B1bmt0ZSB2b24gU3ByYWNoZW4gZ3V0IGF1ZmbDpGxsaWcgc2luZC4gCgojIzIuMiDDnGJlcnNldHp1bmdzc8OkdHplbgoKRGllc2VyIMOcYmVyc2V0enVuZ3Nib2dlbiB3dXJkZSB2b24gbWlyIHVuZCB6d2VpIHdlaXRlcmVuIFN0dWRlbnRpbm5lbiB6dXNhbW1lbmdlc3RlbGx0LgpNaXQgZGllc2VtIMOcYmVyc2V0enVuZ3Nib2dlbiBtw7ZjaHRlbiB3aXIgaGVyYXVzZmluZGVuLCB3aWUgYmVzdGltbXRlIFPDpHR6ZSBpbiB2ZXJzY2hpZWRlbmUgU3ByYWNoZW4gYXVmZ2ViYXV0IHNpbmQsIHdpZSBTdXBlcmxhdGl2IHVuZCBNb2RhbHBhcnRpa2Vsbi4gRGFoZXIgZW50aMOkbHQgZGVyIMOcYmVyc2V0enVuZ3Nib2dlbiBmb2xnZW5kZSBaZWhuIFPDpHR6ZToKCjEuIEljaCBrb2NoZSBTdXBwZS4gCjIuIERlciBCw6Rja2VyIGJhY2t0IGphIGRhcyBCcm90IGFtIHNjaG5lbGxzdGVuLiAKMy4gRGllIFNjaMO8bGVyIGjDtnJlbiBhbSBsaWVic3RlbiBNdXNpayB2b24gTW96YXJ0LiAKNC4gRGllIFRvdXJpc3RlbiBzZWhlbiBkaWVzZSBmw7xuZiBncm/Dn2VuIEjDpHVzZXIuIAo1LiBEaWUgS2luZGVyIHdlcmZlbiBkb2NoIGVpbmVuIHNjaMO2bmVuIGdyb8OfZW4gcm90ZW4gQmFsbC4gCjYuIFdhcyBtYWNoc3QgZHUgZGVubj8gCjcuIER1IGhhc3QgZWJlbiBuaWNodCBnZW51ZyBnZWxlcm50ISAKOC4gVGltIHdpcmZ0IGRlbiBCYWxsIGFtIHdlaXRlc3Rlbi4gCjkuIEtsZWluZSBIdW5kZSBiZWxsZW4gYWJlciBhbSBsYXV0ZXN0ZW4uIAoxMC4gRGFzIGZldWNodGUgSG9seiB2ZXJicmVubnQgYW0gc2NobGVjaHRlc3Rlbi4gCgpJY2ggaW50ZXJlc3NpZXJlIG1pY2ggw7xiZXIgZGVuIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQgZGVuIFdvcnRzdGVsbHVuZ2VuIGluIE5vbWluYWxwaHJhc2VuIGRlciBTcHJhY2hlbi4gRsO8ciBtZWluIEFuYWx5c2llcmVuIHNpbmQgbnVyIGZvbGdlbmRlIFNhdHp0ZWlsZW4gcmVsZXZhbnQ6IAoKLSAxLiBJY2gga29jaGUgU3VwcGUuIFtTdWJqZWt0ICsgVmVyYiArIE9iamVrdF0KLSAzLiBNdXNpayB2b24gTW96YXJ0IFsgTm9tZW4gKyBOb21lbl0KLSA0LiBkaWVzZSBmw7xuZiBncm/Dn2VuIEjDpHVzZXIgW0RFVCArIE51bSArIEFkai1VbWZhbmcgKyBOXQotCTUuIGVpbmVuIHNjaMO2bmVuIGdyb8OfZW4gcm90ZW4gQmFsbCBbIEFSVCArIEFkaiArIEFkai1VbWZhbmcgKyBGYXJiZSArIE5dCi0JOS4ga2xlaW5lIEh1bmRlIFtBZGogKyBOXQotCTEwLiBkYXMgZmV1Y2h0ZSBIb2x6IFtERVQgKyBBZGogKyBOXQoKTWl0IFNhdHogMSBtw7ZjaHRlIGljaCBkaWUgV29ydGZvbGdlbiBpbSBTYXR6IHZvbiBkZXIgU3ByYWNoZSBmZXN0enVzdGVsbGVuLiBMZWlkZXIgZ2lidCBlcyB2aWVsZSBTcHJhY2hlbiwgd2VubiBkZXIgU3ViamVrdCBpbSBTYXR6ICJpY2giIGlzdCwgZsOkbGx0IGRlbiBTdWJqZWt0IHdlZyB1bmQgd2lyZCBtaXQgZGVyIEVuZHVuZyB2b24gVmVyYiBtYXJraWVydC4gRGFoZXIgaGFiZSBpY2ggZGllIFdvcnRmb2xnZW4gdm9uIGRlciBTcHJhY2hlIGltbWVyIGF1ZiBhbGxlIGdlZnJhZ3RlIHplaG4gU8OkdHplbiBiZXLDvGNrc2ljaHRpZ3QuIE1pdCBQaHJhc2UgIk11c2lrIHZvbiBNb3phcnQiIHdpcmQgZGllIEdlbml0aXYtTm9tZW4tUmVpaGVuZm9sZ2UgYW5hbHlzaWVydCwgZGFtaXQgd2lyZCBkaWUgUmVpaGVuZm9sZ2UgZsO8ciBHZW5pdGl2LU5vbWVuIG9kZXIgTm9tZW4tR2VuaXRpdiBpbiBkZXIgU3ByYWNoZSBmZXN0Z2VzdGVsbHQuIE1pdCBTw6R0emVuIDQsIDUsIDksIDEwIHdlcmRlbiBkaWUgUmVpaGVuZm9sZ2VuIHZvbiB2ZXJzY2hpZWRlbmVuIEVsZW1lbnRlbiBpbiBkZXIgTm9taW5hbHBocmFzZSBkZXIgZXJob2JlbmVuIFNwcmFjaGVuIGZlc3RnZXN0ZWxsdC4gCgojIzIuMyBNZXRob2RlIHVuZCBBYmxhdWYKCkRpZSBtZWlzdGVuIEluZm9ybWFudGVuIHNpbmQgbWVpbmUgQXJiZWl0c2tvbGxlZ2VuLCBGcmV1bmRlIG9kZXIgS29tbWlsaXRvbmVuLiBEdXJjaCBwZXJzw7ZubGljaGUgR2VzcHLDpGNoZSwgRS1NYWlscyB1bmQgTmFjaHRyaWNodGVuIHZvbiBGYWNlYm9vayBoYWJlIGljaCBzaWUgYWxzIEluZm9ybWFudGVuIGdld29ubmVuLiBEaWUgw5xiZXJzZXR6dW5nc2JvZ2VuIHNpbmQgZW50d2VkZXIgaW4gYXVzZ2VkcsO8Y2t0ZW4gUGFwaWVyZm9ybWVuIGFuIEluZm9ybWFudGVuIHBlcnPDtm5saWNoIGdlZ2ViZW4sIG9kZXIgYWxzIFdvcmQtIHVuZCBQREYtRGF0ZWkgYW4gSW5mb3JtYW50ZW4gcGVyIEUtTWFpbCBlcnJlaWNodGV0LiBEaWUgSW5mb3JtYW50ZW4gaGFiZW4gZHVyY2hzY2huaXR0bGljaCBjYS4gZWluZSBXb2NoZSBnZWJyYXVjaHQsIGJpcyBzaWUgdW5zIGRpZSDDnGJlcnNldHp1bmdlbiB6dXLDvGNrZ2ViZW4uIFZpZWxlIFNwcmFjaGVuLCB3aWUgS3JvYXRpc2NoLCBBcm1lbmlzY2ggdW5kIFJ1bcOkbmlzY2gsIGhhdHRlbiBkaWUgSW5mb3JtYW50ZW4gd2VpdGVyIGlocmUgRnJldW5kZSBmw7xyIHVucyBnZWZyYWd0LiBadXNhbW1lbmZhc3NlbmRlIGthbm4gbWFuIHNhZ2VuLCBkYXNzIEVua29kaWVydW5nIGRlciBJbmZvcm1hbnRlbiBuaWNodCBzZWhyIHNjaHdpZXJpZyB3YXIuIERlbm4gc2llIHNpbmQgc2VociBtb3RpdmllcnQsIGlocmUgTXV0dGVyc3ByYWNoZSBmw7xyIGFuZHJlIFBlcnNvbiB6dSBlcmtsw6RyZW4gdW5kIGRpZSBVbnRlcnNjaGllZGVuIHp3aXNjaGVuIGlocmUgTXV0dGVyc3ByYWNoZSB1bmQgRGV1dHNjaCB6dSBlcmtlbm5lbi4gCgpEaWUgVW1mcmFnZWJvZ2VuICJVbWZyYWdlIFN0dWRpZSBTcHJhY2h0eXBvbG9naWUiIGlzdCB1bnRlbiBPcmRuZXIgIlVtZnJhZ2UiIHp1IGZpbmRlbi4gQXXDn2VyZGVtIHNpbmQgbm9jaCAyMiBlcmhvYmVuZSBVbWZyYWdlYm9nZW4gYXVjaCBpbiBkZW1zZWxiZW4gT3JkbmVyIHp1IGZpbmRlbi4gCgoKIzMuIEVyZ2Vibmlzc2UgZGVyIFVtZnJhZ2UKCkRpZSBFcmdlYm5pc3NlIGRlciBVbWZyYWdlc8OkdHplIHNpbmQgenVlcnN0IG5hY2ggU3ByYWNoZSBhbmFseXNpZXJ0LiBEaWUgV29ydGZvbGdlIGluIFPDpHR6ZW4gdW5kIGRpZSBXb3J0c3RlbGx1bmcgaW0gTm9taW5hbHBocmFzZW4gc2luZCBuYWNoIGplZGVyIFNwcmFjaGUgc2VociBnZW5hdSBiZXLDvGNrc2ljaHRpZ3QuIERpZSBFcmdlYm5pc3NlIHNpbmQgYWxzIEV4Y2VsLURhdGVpICJVbWZyYWdlIEFuYWx5c2UiIHVudGVyIE9yZG5lciBzb3VyY2VzIHp1IGZpbmRlbi4gCgpGw7xyIGRpZSBBbmFseXNlIGluIFIgd2lyZCBkaWUgRXhjZWwtRGF0ZWkgIkRhdGVuX1VtZnJhZ2UiIGdlbnV0enQuIEluIGRpZXNlciBBbmFseXNlIHNpbmQgU3ByYWNoZSBuYWNoIExhbmQsIEdhdHR1bmcgdW5kIEZhbWlsaWUgenVlcnN0IGdlYWNodGV0LiBBdcOfZXJkZW0gc2luZCBMb25naXR1ZGUgdW5kIExhdGl0dWRlIHZvbiBkZXIgU3ByYWNoZSBuYWNoIFdhbHMuaW5mbyBmw7xyIGRhcyBFcnN0ZWxsZW4gZGVyIEthcnRlIGdlYWNodGV0LiBEaWUgQW5hbHlzZSB2b24gRGF0ZW4gc2luZCBhdcOfZXIgV29ydGZvbGdlIHVudGVyIHNlaHIgdmllbGUga2xlaW5lIEVsZW1lbnRwYWFyZSBnZXRlaWx0LCB3aWUgIkFkamVrdGl2ICsgTm9tZW4iLCAiTXVzaWsgKyBNb3phcnQiLCAiQXJ0aWtlbCArIE5vbWVuIiwgIkZhcmJlICsgTm9tZW4iLCAiTnVtZXJhbGUgKyBOb21lbiIsICJBcnRpa2VsICsgRmFyYmUiLCAiQXJ0aWtlbCArIE51bWVyYWxlIiwgIkFydGlrZWwgKyBBZGpla3RpdiIsICJGYXJiZSArIEFkamVrdGl2IiB1bmQgIkFkamVrdGl2ICsgQWRqZWt0aXYtVW1mcmFuZyIuIAoKSW0gRm9sZ2VuZGVuIHdlcmRlbiBuaWNodCBudXIgZGllIFZlcnRlaWx1bmcgZGVyIFdvcnRmb2xnZSB2b24gU3ViamVrdCwgT2JqZWt0IHVuZCBWZXJiIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4gaW4gV2VsdGthcnRlIGRhcmdlc3RlbGx0LCBzb25kZXJuIGF1Y2ggZGllIFdvcnRzdGVsbHVuZ2VuIGluIE5vbWluYWxwaHJhc2VuIHVuZCBkaWUgUmVpaGVuZm9sZ2Ugdm9uIHZlcnNjaGllZGVuZW4gQXJ0ZW4gZGVyIEFkamVrdGl2ZSBpbiBOb21pbmFscGhyYXNlIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4uIAoKIyMzLjEgRGllIFdvcnRmb2xnZSB2b24gU3ViamVrdCwgT2JqZWt0IHVuZCBWZXJiIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4KCkbDvHIgZGllIFdvcnRmb2xnZW4gdm9uIFN1Ympla3QsIE9iamVrdCB1bmQgVmVyYiB3ZXJkZW4gbmljaHQgbnVyIG5hY2ggZGVtIFNhdHogMSAiSWNoIGtvY2hlIFN1cHBlIiBmZXN0Z2VzdGVsbHQsIHNvbmRlcm4gYXVjaCBhbGxlIHdlaXRlcmUgbmV1biBTw6R0emUgdm9uIFVtZnJhZ2Vib2dlbi4gCgpNaXQgZGVyIEZ1bmt0aW9uICJ0YWJsZSgpIiBrw7ZubmVuIHdpciBkaWUgVmVydGVpbHVuZyBkZXIgV29ydGZvbGcgdm9uIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4gc2VoZW4uIEluIGRpZXNlbiBTcHJhY2hlbiBnaWJ0IGVzIGluc2dlc2FtdCBzZWNocyBTcHJhY2hlLCBkaWUgU3ViamVrdC1PYmpla3QtVmVyYiBXb3J0Zm9sZ2UgaGFiZW4sIHVuZCBpbnNnZXNhbXQgMjAgU3ByYWNoZSwgZGllIFN1Ympla3QtVmVyYi1PYmpla3QgV29ydGZvbGdlIGhhYmVuLiAKCiMjIyMgS2FydGUgMzogRGllIFdvcnRmb2xnZSB2b24gU3ViamVrdCwgT2JqZWt0IHVuZCBWZXJiIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4KCmBgYHtyfQp0YWJsZShEYXRlbiRXb3J0Zm9sZ2UpCmBgYAoKCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygiYmx1ZSIsICJyZWQiKQpteWNvbHMgPC0gY29sc1tEYXRlbiRXb3J0Zm9sZ2VdCgpteXN5bWJvbHMgPC0gYygyMCwgMjApCldvcnRmb2xnZSA8LSBteXN5bWJvbHNbRGF0ZW4kV29ydGZvbGdlXQoKZnJlcSA8LSB0YWJsZShEYXRlbiRXb3J0Zm9sZ2UpCm15bmFtZSA8LSBjKAogICAgICBwYXN0ZTAoIlNPVi1TcHJhY2hlICgiLCBmcmVxWzFdLCAiKSIpCiAgICAsIHBhc3RlMCgiU1ZPLVNwcmFjaGUgKCIsIGZyZXFbMl0sICIpIikKICAgICkKCnBvaW50cyhEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IFdvcnRmb2xnZQogICAgICAgLCBjb2wgPSBteWNvbHMpCgp0aXRsZShtYWluID0gIkRpZSBXb3J0Zm9sZ2Ugdm9uIFN1Ympla3QsIE9iamVrdCB1bmQgVmVyYiAKZGVyIGVyaG9iZW5lbiBTcHJhY2hlbiIpCgpsZWdlbmQgKCJib3R0b21sZWZ0IgogICAgICAgICwgbGVnZW5kID0gbXluYW1lCiAgICAgICAgLCBwY2ggPSBXb3J0Zm9sZ2UKICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCgoKCgoKCiMjMy4yIERpZSBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiBkZXIgZXJob2JlbmVuIFNwcmFjaGVuCgoKCgojIyMgMy4yLjEgRGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZQoKCmBgYHtyfQp0YWJsZShEYXRlbiRBZGpla3Rpdi5Ob21lbikKYGBgCgoKIyMjIyBLYXJ0ZSA0OiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygicmVkIiwgImJsdWUiLCAiZ3JlZW4zIikKbXljb2xzMSA8LSBjb2xzW0RhdGVuJEFkamVrdGl2Lk5vbWVuXQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwLCAyMCkKQWRqTm9uIDwtIG15c3ltYm9sc1tEYXRlbiRBZGpla3Rpdi5Ob21lbl0KCm15bmFtZSA8LSBjKCJBZGpla3RpdiB2b3IgTm9tZW4gKDE3KSIsICJOb21lbiB2b3IgQWRqZWt0aXYgKDcpIiwgIkJlaWRlcyAoMikiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IEFkak5vbgogICAgICAgLCBjb2wgPSBteWNvbHMxKQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEFkak5vbgogICAgICAgICwgY29sID0gY29scwogICAgICAgICwgY2V4ID0gMC43CiAgICAgICAgLCBwdC5jZXggPSAxLjUpCmBgYAoKQWxsZSBiZXLDvGNrc2ljaHRpZ2UgTm9taW5hbHBocmFzZTogCgoKCgojIyMgMy4yLjIgRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlCgpgYGB7cn0KdGFibGUoRGF0ZW4kQXJ0aWtlbC5Ob21lbikKYGBgCgoKCiMjIyMgS2FydGUgNTogRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygicmVkIiwgImJsdWUiLCAiZ3JlZW4zIikKbXljb2xzMiA8LSBjb2xzW0RhdGVuJEFydGlrZWwuTm9tZW5dCgpteXN5bWJvbHMgPC0gYygyMCwgMjAsIDIwKQpBcnROb24gPC0gbXlzeW1ib2xzW0RhdGVuJEFydGlrZWwuTm9tZW5dCgpteW5hbWUgPC0gYygiQXJ0aWtlbCB2b3IgTm9tZW4gKDIzKSIsICJOb21lbiB2b3IgQXJ0aWtlbCAoMikiLCAiTmljaHQgS2xhciAoMSkiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IEFydE5vbgogICAgICAgLCBjb2wgPSBteWNvbHMyKQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UiKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gQXJ0Tm9uCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgpBbGxlIGJlcsO8Y2tzaWNodGlnZSBOb21pbmFscGhyYXNlOgoKCgo/Pz8KTkEgemVpZ3QgaGllciBpbiBkZXIgS2FydGUgbmljaHQuLi4gUGVyc2lzY2gKPz8/CgpXYXJ1bSBuaWNodCBrbGFyPyBuaWNodCBlaW5nZWdlYmVuPyBuaWNodCB2b3Jrb21tZW4/IGV0Yy4KCgoKCiMjIyAzLjIuMyBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEZhcmJlIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlICJyb3RlciBCYWxsIgoKYGBge3J9CnRhYmxlKERhdGVuJEZhcmJlLk5vbWVuKQpgYGAKCgoKIyMjIyBLYXJ0ZSA2OiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEZhcmJlIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlOiByb3RlciBCYWxsCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygicmVkIiwgImJsdWUiKQpteWNvbHMzIDwtIGNvbHNbRGF0ZW4kRmFyYmUuTm9tZW5dCgpteXN5bWJvbHMgPC0gYygyMCwgMjApCkZhcmJOb24gPC0gbXlzeW1ib2xzW0RhdGVuJEZhcmJlLk5vbWVuXQoKbXluYW1lIDwtIGMoIkZhcmJlIHZvciBOb21lbiAoMTgpIiwgIk5vbWVuIHZvciBGYXJiZSAoOCkiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IEZhcmJOb24KICAgICAgICwgY29sID0gbXljb2xzMykKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBGYXJiZSB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZTogcm90ZXIgQmFsbCIpCgpsZWdlbmQgKCJib3R0b21sZWZ0IgogICAgICAgICwgbGVnZW5kID0gbXluYW1lCiAgICAgICAgLCBwY2ggPSBGYXJiTm9uCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgoKCgoKCgoKCiMjIyAzLjIuNCBEaWUgUmVpaGVuZm9sZ2Ugdm9uIE51bWVyYWxlbiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZSAiZsO8bmYgSMOkdXNlciIKCgpgYGB7cn0KdGFibGUoRGF0ZW4kTnVtZXJhbC5Ob21lbikKYGBgCgoKIyMjIyBLYXJ0ZSA3OiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIE51bWVyYWxlIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlOiBmw7xuZiBIw6R1c2VyCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygiYmx1ZSIsICJyZWQiKQpteWNvbHM0IDwtIGNvbHNbRGF0ZW4kTnVtZXJhbC5Ob21lbl0KCm15c3ltYm9scyA8LSBjKDIwKQpOdW1Ob24gPC0gbXlzeW1ib2xzW0RhdGVuJE51bWVyYWwuTm9tZW5dCgpteW5hbWUgPC0gYygiTnVtZXJhbGUgdm9yIE5vbWVuICgyNikiLCAiTm9tZW4gdm9yIE51bWVyYWxlICgwKSIpCgpwb2ludHMgKERhdGVuJExvbmdpdHVkZSwgRGF0ZW4kTGF0aXR1ZGUKICAgICAgICwgcGNoID0gTnVtTm9uCiAgICAgICAsIGNvbCA9IG15Y29sczQpCgp0aXRsZShtYWluID0gIkRpZSBSZWloZW5mb2xnZSB2b24gTnVtZXJhbGUgdW5kIE5vbWVuIAppbiBOb21pbmFscGhyYXNlOiBmw7xuZiBIw6R1c2VyIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IE51bU5vbgogICAgICAgICwgY29sID0gY29scwogICAgICAgICwgY2V4ID0gMC43CiAgICAgICAgLCBwdC5jZXggPSAxLjUpCmBgYAoKSW4gYWxsZW4gZXJob2JlbmVuIFNwcmFjaGVuIHNpbmQgTnVtZXJhbCB2b3IgTm9tZW4gaW4gTm9taW5hbHBocmFzZSAiZsO8bmYgSMOkdXNlciIsIGhpZXIgZ2lidCBlcyBrZWluZSBBdXNuYWhtZS4KCgoKCgojIyMgMy4yLjUgRGllIFdvcnRmb2xnZSB2b24gR2VuaXRpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZSAiTXVzaWsgdm9uIE1vemFydCIKCmBgYHtyfQp0YWJsZShEYXRlbiRNdXNpay5Nb3phcnQpCmBgYAoKCgojIyMjIEthcnRlIDg6IERpZSBXb3J0Zm9sZ2Ugdm9uIEdlbml0aXYgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2U6IE11c2lrIHZvbiBNb3phcnQKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJyZWQiLCAiYmx1ZSIsICJncmVlbjMiKQpteWNvbHM1IDwtIGNvbHNbRGF0ZW4kTXVzaWsuTW96YXJ0XQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwLCAyMCkKTXVNbyA8LSBteXN5bWJvbHNbRGF0ZW4kTXVzaWsuTW96YXJ0XQoKbXluYW1lIDwtIGMoIkdlbml0aXYgdm9yIE5vbWVuICg5KSIsICJOb21lbiB2b3IgR2VuaXRpdiAoMTUpIiwgIk5pY2h0IGtsYXIgKDIpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBNdU1vCiAgICAgICAsIGNvbCA9IG15Y29sczUpCgp0aXRsZShtYWluID0gIkRpZSBXb3J0Zm9sZ2Ugdm9uIEdlbml0aXYgdW5kIE5vbWVuCmluIE5vbWluYWxwaHJhc2U6IE11c2lrIHZvbiBNb3phcnQiKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gTXVNbwogICAgICAgICwgY29sID0gY29scwogICAgICAgICwgY2V4ID0gMC43CiAgICAgICAgLCBwdC5jZXggPSAxLjUpCmBgYAoKCgoKCgoKIyMzLjMgRGllIFJlaWhlbmZvbGdlIHZvbiB2ZXJzY2hpZWRlbmVuIEFydGVuIGRlciBBZGpla3RpdmUgaW4gTm9taW5hbHBocmFzZQoKCgojIyMgMy4zLjEgRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBGYXJiZSBpbiBOb21pbmFscGhyYXNlICJlaW5lbiByb3RlbiBCYWxsIgoKYGBge3J9CnRhYmxlKERhdGVuJEFydGlrZWwuRmFyYmUpCmBgYAoKIyMjIyBLYXJ0ZSA5OiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIEZhcmJlIGluIE5vbWluYWxwaHJhc2U6IGVpbmVuIHJvdGVuIEJhbGwKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgInJlZCIsICJncmVlbjMiKQpteWNvbHM2IDwtIGNvbHNbRGF0ZW4kQXJ0aWtlbC5GYXJiZV0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCwgMjApCkFydEZhIDwtIG15c3ltYm9sc1tEYXRlbiRBcnRpa2VsLkZhcmJlXQoKbXluYW1lIDwtIGMoIkFydGlrZWwgdm9yIEZhcmJlICgyOCkiLCAiRmFyYmUgdm9yIEFydGlrZWwgKDEpIiwgIk5pY2h0IGtsYXIgKDcpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBcnRGYQogICAgICAgLCBjb2wgPSBteWNvbHM2KQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIEZhcmJlIAppbiBOb21pbmFscGhyYXNlOiBlaW5lbiByb3RlbiBCYWxsIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEFydEZhCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgoKCj8/PyBXYXJ1bSBzbyB2aWxlICJuaWNodCBrbGFyIgoKCgoKIyMjIDMuMy4yIERpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgTnVtZXJhbGUgaW4gTm9taW5hbHBocmFzZSAiZGllc2UgZsO8bmYgSMOkdXNlciIKCgpgYGB7cn0KdGFibGUoRGF0ZW4kQXJ0aWtlbC5OdW1lcmFsKQpgYGAKCgojIyMjIEthcnRlIDEwOiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIE51bWVyYWxlIGluIE5vbWluYWxwaHJhc2U6IGRpZXNlIGbDvG5mIEjDpHVzZXIKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgImdyZWVuMyIsICJyZWQiKQpteWNvbHM3IDwtIGNvbHNbRGF0ZW4kQXJ0aWtlbC5OdW1lcmFsXQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwLCAyMCkKQXJ0TnVtIDwtIG15c3ltYm9sc1tEYXRlbiRBcnRpa2VsLk51bWVyYWxdCgpteW5hbWUgPC0gYygiQXJ0aWtlbCB2b3IgTnVtZXJhbGUgKDIxKSIsICJOaWNodCBrbGFyICgxKSIsICJOdW1lcmFsZSB2b3IgQXJ0aWtlbCAoNCkiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IEFydE51bQogICAgICAgLCBjb2wgPSBteWNvbHM3KQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIE51bWVyYWxlCmluIE5vbWluYWxwaHJhc2U6IGRpZXNlIGbDvG5mIEjDpHVzZXIiKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gQXJ0TnVtCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgoKCgoKCgoKCgojIyMgMy4zLjMgRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBBZGpla3RpdiBpbiBOb21pbmFscGhyYXNlICJkYXMgZmV1Y2h0ZSBIb2x6IgoKYGBge3J9CnRhYmxlKERhdGVuJEFydGlrZWwuQWRqZWt0aXYpCmBgYAoKCiMjIyMgS2FydGUgMTE6IERpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgQWRqZWt0aXYgaW4gTm9taW5hbHBocmFzZTogZGFzIGZldWNodGUgSG9segoKYGBge3J9Cm1hcHM6Om1hcCgid29ybGQiCiAgICAgICAgICAsaW50ZXJpb3IgPSBGQUxTRQogICAgICAgICAgLCBjb2wgPSAiZ3JleSIKICAgICAgICAgICwgcmVzb2x1dGlvbiA9IDApCgpjb2xzIDwtIGMoImJsdWUiLCAicmVkIiwgImdyZWVuMyIpCm15Y29sczggPC0gY29sc1tEYXRlbiRBcnRpa2VsLkFkamVrdGl2XQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwLCAyMCkKQXJ0QWRqIDwtIG15c3ltYm9sc1tEYXRlbiRBcnRpa2VsLkFkamVrdGl2XQoKbXluYW1lIDwtIGMoIkFkamVrdGl2IHZvciBBcnRpa2VsICgyMikiLCAiQXJ0aWtlbCB2b3IgQWRqZWt0aXYgKDIpIiwgIk5pY2h0IGtsYXIgKDIpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBcnRBZGoKICAgICAgICwgY29sID0gbXljb2xzOCkKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBBZGpla3RpdiAKaW4gTm9taW5hbHBocmFzZTogZGFzIGZldWNodGUgSG9seiIpCgpsZWdlbmQgKCJib3R0b21sZWZ0IgogICAgICAgICwgbGVnZW5kID0gbXluYW1lCiAgICAgICAgLCBwY2ggPSBBcnRBZGoKICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCgoKCgoKCgoKIyMjIDMuMy40IERpZSBSZWloZW5mb2xnZSB2b24gRmFyYmUgdW5kIEFkamVrdGl2IGluIE5vbWluYWxwaHJhc2UgInNjaMO2bmVuIHJvdGVuIEJhbGwiCgpgYGB7cn0KdGFibGUoRGF0ZW4kRmFyYmUuQWRqZWt0aXYpCmBgYAoKIyMjIyBLYXJ0ZSAxMjogRGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgRmFyYmUgaW4gTm9taW5hbHBocmFzZTogc2Now7ZuZW4gcm90ZW4gQmFsbAoKYGBge3J9Cm1hcHM6Om1hcCgid29ybGQiCiAgICAgICAgICAsaW50ZXJpb3IgPSBGQUxTRQogICAgICAgICAgLCBjb2wgPSAiZ3JleSIKICAgICAgICAgICwgcmVzb2x1dGlvbiA9IDApCgpjb2xzIDwtIGMoImJsdWUiLCAicmVkIikKbXljb2xzOSA8LSBjb2xzW0RhdGVuJEZhcmJlLkFkamVrdGl2XQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwKQpGYUFkaiA8LSBteXN5bWJvbHNbRGF0ZW4kRmFyYmUuQWRqZWt0aXZdCgpteW5hbWUgPC0gYygiQWRqZWt0aXYgdm9yIEZhcmJlICgyMCkiLCAiRmFyYmUgdm9yIEFkamVrdGl2ICg2KSIpCgpwb2ludHMgKERhdGVuJExvbmdpdHVkZSwgRGF0ZW4kTGF0aXR1ZGUKICAgICAgICwgcGNoID0gRmFBZGoKICAgICAgICwgY29sID0gbXljb2xzOSkKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgRmFyYmUgCmluIE5vbWluYWxwaHJhc2U6IHNjaMO2bmVuIHJvdGVuIEJhbGwiKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gRmFBZGoKICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCgoKCgoKIyMjIDMuMy41IERpZSBSZWloZW5mb2xnZSB2b24gQWRqZWt0aXYgdW5kIFVtZmFuZ3NhZGpla3RpdiBpbiBOb21pbmFscGhyYXNlICJzY2jDtm5lbiBncm/Dn2VuIEJhbGwiCgpgYGB7cn0KdGFibGUoRGF0ZW4kQWRqZWt0aXYuQWRqZWt0aXYuVW1mYW5nKQpgYGAKCiMjIyMgS2FydGUgMTM6IERpZSBSZWloZW5mb2xnZSB2b24gQWRqZWt0aXYgdW5kIFVtZmFuZ3NhZGpla3RpdiBpbiBOb21pbmFscGhyYXNlOiBzY2jDtm5lbiBncm/Dn2VuIEJhbGwKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgInJlZCIsICJncmVlbjMiKQpteWNvbHMxMCA8LSBjb2xzW0RhdGVuJEFkamVrdGl2LkFkamVrdGl2LlVtZmFuZ10KCm15c3ltYm9scyA8LSBjKDIwLCAyMCwgMjApCkFkakFkalUgPC0gbXlzeW1ib2xzW0RhdGVuJEFkamVrdGl2LkFkamVrdGl2LlVtZmFuZ10KCm15bmFtZSA8LSBjKCJVbWZhbmdzYWRqZWt0aXYgdm9yIEFkamVrdGl2ICg4KSIsICJBZGpla3RpdiB2b3IgVW1mYW5nc2FkamVrdGl2ICgxNikiLCAiTmljaHQga2xhciAoMikiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IEFkakFkalUKICAgICAgICwgY29sID0gbXljb2xzMTApCgp0aXRsZShtYWluID0gIkRpZSBSZWloZW5mb2xnZSB2b24gQWRqZWt0aXYgdW5kIFVtZmFuZ3NhZGpla3RpdiAKaW4gTm9taW5hbHBocmFzZTogc2Now7ZuZW4gZ3Jvw59lbiBCYWxsIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEFkakFkalUKICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCgoKCmBgYHtyfQoKYGBgCgoKCgoKCgoKYGBge3J9CgpgYGAKCgoKCgoKCiM0LiBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiBkZXIgZXJob2JlbmVuIFNwcmFjaGVuCgoKKipWZXJtdXR1bmdlbioqCgpgYGB7cn0KCmBgYAoKCgojIzQuMSBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRpZSBXb3J0c3RlbGx1bmcgZGVzIEFkamVrdGl2cyB1bmQgTm9tZW4KCgoKYGBge3J9CkZvbGdlMSA8LSB0YWJsZShEYXRlbiRXb3J0Zm9sZ2UsIERhdGVuJEFkamVrdGl2Lk5vbWVuKQpGb2xnZTEKYGBgCgoKCgoKYGBge3J9CmJhcnBsb3QgKEZvbGdlMQogICAgICAgICAsIG1haW4gPSAiWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZApkaWUgV29ydHN0ZWxsdW5nIGRlcyBBZGpla3RpdnMgdW5kIE5vbWVuIgogICAgICAgICApCmBgYApEZXIgVW50ZXJzY2hpZWQgendpc2NoZW4gZGVuIFNwcmFjaGVuIGthbm4gbWFuIGF1Y2ggbWl0IGVpbmVtIEJveHBsb3QgZGFyc3RlbGxlbiwgYWJlciBkYXMgaGlsZnQgbmljaHQgc28gdmllbCwgd2VpbCBqZWRlciBWb2thbCBhbmRlcnMgaXN0LiAKCgpgYGB7cn0KbW9zYWljcGxvdChGb2xnZTEKICAgICAgICAgICAsIGNvbG9yID0gVFJVRQogICAgICAgICAgICwgeGxhYiA9ICJXb3J0Zm9sZ2UiCiAgICAgICAgICAgLCB5bGFiID0gIldvcnRzdGxsdW5nIGRlciBBZGpla3RpdiB1bmQgTm9tZW4iCiAgICAgICAgICAgLCBtYWluID0gIlp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQgCmRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgQWRqZWt0aXZlbiB1bmQgTm9tZW4iKQpgYGAKCgpgYGB7cn0KY2hpc3EudGVzdChGb2xnZTEpCmBgYAoKCgpgYGB7cn0KdC50ZXN0KEZvbGdlMSkKYGBgCgoKPz8/IApgYGB7cn0KY29yLnRlc3QoRm9sZ2UxLCBGb2xnZTEpCmBgYAoKCgoKIyM0LjIgWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCBkZW4gV29ydHN0ZWxsdW5nZW4gZGVyIEFydGlrZWwgdW5kIE5vbWVuIAoKCgpgYGB7cn0KRm9sZ2UyIDwtIHRhYmxlKERhdGVuJFdvcnRmb2xnZSwgRGF0ZW4kQXJ0aWtlbC5Ob21lbikKRm9sZ2UyCmBgYAoKCgoKCgpgYGB7cn0KbW9zYWljcGxvdCAoRm9sZ2UyCiAgICAgICAgICAgICwgY29sb3IgPSBUUlVFCiAgICAgICAgLCB4bGFiID0gIldvcnRmb2xnZW4iCiAgICAgICAgLCB5bGFiID0gIldvcnRzdGVsbHVuZyB2b24gQXJ0aWtlbCB1bmQgTm9tZW4iCiAgICAgICAgLCBtYWluID0gIlp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQKICAgICAgICBkZW4gV29ydHN0ZWxsdW5nZW4gZGVyIEFydGlrZWwgdW5kIE5vbWVuICIpCmBgYAoKCmBgYHtyfQpjaGlzcS50ZXN0KEZvbGdlMikKYGBgCgpgYGB7cn0KdC50ZXN0KEZvbGdlMikKYGBgCgpgYGB7cn0KY29yLnRlc3QoRm9sZ2UyLCBGb2xnZTIpCmBgYAoKCgojIzQuMyBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgRmFyYmUgdW5kIE5vbWVuIAoKCgpgYGB7cn0KRm9sZ2UzIDwtIHRhYmxlKERhdGVuJFdvcnRmb2xnZSwgRGF0ZW4kRmFyYmUuTm9tZW4pCkZvbGdlMwpgYGAKCgpgYGB7cn0KbW9zYWljcGxvdCAoRm9sZ2UzCiAgICAgICAgLCBjb2xvciA9IFRSVUUKICAgICAgICAsIHhsYWIgPSAiV29ydGZvbGdlbiIKICAgICAgICAsIHlsYWIgPSAiV29ydHN0ZWxsdW5nIHZvbiBGYXJiZSB1bmQgTm9tZW4iCiAgICAgICAgLCBtYWluID0gIlp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQKZGVuIFdvcnRzdGVsbHVuZ2VuIGRlciBGYXJiZSB1bmQgTm9tZW4gIikKYGBgCgoKYGBge3J9CmNoaXNxLnRlc3QoRm9sZ2UzKQpgYGAKCgpgYGB7cn0KdC50ZXN0KEZvbGdlMykKYGBgCgoKIyM0LjQgWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCBkZW4gV29ydHN0ZWxsdW5nZW4gZGVyIE51bWVyYWxlIHVuZCBOb21lbiAKCmBgYHtyfQpGb2xnZTQgPC0gdGFibGUoRGF0ZW4kV29ydGZvbGdlLCBEYXRlbiROdW1lcmFsLk5vbWVuKQpGb2xnZTQKYGBgCgpgYGB7cn0KbW9zYWljcGxvdCAoRm9sZ2U0CiAgICAgICAgLCB4bGFiID0gIldvcnRmb2xnZW4iCiAgICAgICAgLCB5bGFiID0gIldvcnRzdGVsbHVuZyB2b24gTnVtZXJhbGUgdW5kIE5vbWVuIgogICAgICAgICwgbWFpbiA9ICJadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kCmRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgTnVtZXJhbGUgdW5kIE5vbWVuICIpCmBgYAoKCmBgYHtyfQpjaGlzcS50ZXN0KEZvbGdlNCkKYGBgCgoKYGBge3J9CnQudGVzdChGb2xnZTQpCmBgYAoKCgoKYGBge3J9CgpgYGAKCgoKCgoKCiM1LiBBbGxnZW1laW5lIERpc2t1c3Npb24gdW5kIEF1c2JsaWNrCgoKCktyaXRpawpJbiB2aWVsZW4gU3ByYWNoZW4gc2luZCBkaWUgQmVkZXV0dW5nIHZvbiBqZWRlbSBXb3J0IG5pY2h0IGtsYXIgbWFya2llcnQgb2RlciBnZXNjaHJpZWJlbiwgd2llIFBlcnNpc2NoLCBLb3JlYW5pc2NoLiBNYW4ga2FubiBudXIgbWl0IFfDtnJ0ZXJidWNoIHVuZCBHb29nbGUgw5xiZXJzZXR6ZXIgZGllIEJlZGV1dHVuZyB2b20gZWluemVsbmVuIFdvcnQgcmF1c3N1Y2hlbiwgYWJlciBtZWlzdGVucyBpc3QgbWFuIHVuc2ljaGVyLiAgRGFoZXIga2FubiBtYW4gbnVyIGRpZSBBcnQgdm9uIFdvcnQgZmVzdHN0ZWxsZW4sIG5pY2h0IGRpZSBnZW5hdWUgQmVkZXV0dW5nIHVuZCBGZWluaGVpdC4gCgoKU2F0eiAxOiBJY2gga29jaGUgU3VwcGUuCkluIFZpZWxlbiBTcHJhY2hlbiB3aXJkIGRlciBTdWJqZWt0IG5pY2h0IGVpbmdlZ2ViZW4sIHdlbm4gZXMgImljaCIgaXN0LiAiSWNoIiBhbHMgU3ViamVrdCB3aXJkIGluIGRlciBFbmR1bmcgdm9uIFZlcmIgbWFraWVydC4gCgoKCktyaXRpazoKMSBOdXIgbWl0IGVpbiBwYWFyIFPDpHR6ZW4gdm9uIMOcYmVyc2V0enVuZ2VuIGthbm4gbWFuIG5pY2h0IGFsbGUgVmFyaWF0aW9uZW4gdm9uIGVpbmVyIFNwcmFjaGUgYmVrb21tZW4sIHNvbmRlcm4gbnVyIGRpZSBwYXNzZW5kZSBGb3JtIHZvbiBkaWVzZW0gU2F0ei4gRGFzIGJlZGV1dGV0IG5vY2ggbGFuZ2UgbmljaHQsIGRhc3MgYW5kZXJlIEZvcm0gaW4gZGllc2VyIFNwcmFjaGUgbmljaHQgZ2lidC4KCjIgRGllIGltIFRleHQgdmVyZ2xlaWNoZW5kZSBSZWloZm9sZ2VuIHNpbmQgYXVjaCBuaWNodCB1bmJlZGluZ3Qgc28gYXVzZ2VkcsO8Y2t0IGluIGRlciBTcHJhY2hlIGluIGFsbGVuIEF1c2Ryw7xja3NzaXR1YXRpb25lbi4gCgoKSmVkb2NoIGdpYnQgZXMgdW5zIGVpbmUgZ3V0ZSDDnGJlcmJsaWNrIHZvbiBTcHJhY2hlbiBkZXIgV2VsdCwgZGFzcyBkaWUgU3ByYWNoZSBzZWhyIHZpZWxmw6RsdGlnIHNpbmQgdW5kIGRvY2ggZWluZW4gWnVzYW1tZW5oYW5nIG1pdCBlaW5hbmRlcm4gaGFiZW4uCgoKCgojTGl0ZXJhdHVyLSB1bmQgUXVlbGxlbnZlcnplaWNobmlzCgotIEtvb3JkaW5hdGUgZsO8ciBkaWUgZXJob2JlbmVuIFNwcmFjaGVuOiBodHRwOi8vd2Fscy5pbmZvL2xhbmd1b2lkIChhdWZnZXJ1ZmVuIGFtIDIyLjAyLjIwMTgpCi0gQ3JvZnQgVy4gVHlwb2xvZ3kgYW5kIHVuaXZlcnNhbHNbTV0uIENhbWJyaWRnZSBVbml2ZXJzaXR5IFByZXNzLCAyMDAyLgotIE0uIEhhc3BlbG1hdGg6IFNwcmFjaGVuIGRlciBXZWx0LiBNYXgtUGxhbmNrLUluc3RpdHV0IGbDvHIgZXZvbHV0aW9uw6RyZSBBbnRocm9wb2xvZ2llICgxOTk5LTIwMDUpIGh0dHA6Ly9ob21lLnVuaS1sZWlwemlnLmRlL211ZWxsZXJnL3N1L2hhc3BlbG1hdGgucGRmIChhdWZnZXJ1ZmVuIGFtIDE0LjAzLjIwMTgpCgoKCgoKCg==